#include <iostream>

#include <limits>

using namespace std;

// 变量类型

int main()
{
  cout << "type: \t\t"
       << "**************size***********" << endl;

  // NOTE: 布尔类型 bool
  cout << "布尔 bool: \t\t"
       << "所占的字节数:" << sizeof(bool) << endl;

  cout << "最大值：" << (numeric_limits<bool>::max)() << endl;

  cout << "最小值" << (numeric_limits<bool>::min)() << endl;

  // NOTE: 字符类型 char
  cout << "字符类型 char: \t\t"
       << "所占的字节数:" << sizeof(char) << endl;

  cout << "最大值：" << (numeric_limits<char>::max)() << endl;

  cout << "最小值" << (numeric_limits<char>::min)() << endl;

  // NOTE: 有符号 signed char
  cout << "有符号 signed char: \t\t"
       << "所占的字节数:" << sizeof(signed char) << endl;

  cout << "最大值：" << (numeric_limits<signed char>::max)() << endl;

  cout << "最小值" << (numeric_limits<signed char>::min)() << endl;

  // NOTE: 无符号 unsigned char
  cout << "无符号 unsigned char: \t\t"
       << "所占的字节数:" << sizeof(unsigned char) << endl;

  cout << "最大值：" << (numeric_limits<unsigned char>::max)() << endl;

  cout << "最小值" << (numeric_limits<unsigned char>::min)() << endl;

  // NOTE: 宽字符 wchar_t
  cout << "宽字符 wchar_t : \t\t"
       << "所占的字节数:" << sizeof(wchar_t) << endl;

  cout << "最大值：" << (numeric_limits<wchar_t>::max)() << endl;

  cout << "最小值" << (numeric_limits<wchar_t>::min)() << endl;

  // NOTE: 数字类型 int
  cout << "数字类型 int : \t\t"
       << "所占的字节数:" << sizeof(int) << endl;

  cout << "最大值：" << (numeric_limits<int>::max)() << endl;

  cout << "最小值" << (numeric_limits<int>::min)() << endl;

  // NOTE: 无符号数字类型 int
  cout << "数字类型 unsigned int : \t\t"
       << "所占的字节数:" << sizeof(unsigned int) << endl;

  cout << "最大值：" << (numeric_limits<unsigned int>::max)() << endl;

  cout << "最小值" << (numeric_limits<unsigned int>::min)() << endl;

  // NOTE: 有符号数字类型 int
  cout << "数字类型 signed int : \t\t"
       << "所占的字节数:" << sizeof(signed int) << endl;

  cout << "最大值：" << (numeric_limits<signed int>::max)() << endl;

  cout << "最小值" << (numeric_limits<signed int>::min)() << endl;

  // NOTE:  short int 类型
  cout << "short int : \t\t"
       << "所占的字节数:" << sizeof(short int) << endl;

  cout << "最大值：" << (numeric_limits<short int>::max)() << endl;

  cout << "最小值" << (numeric_limits<short int>::min)() << endl;

  // NOTE: unsigned  short int 类型
  cout << "unsigned int : \t\t"
       << "所占的字节数:" << sizeof(unsigned short int) << endl;

  cout << "最大值：" << (numeric_limits<unsigned short int>::max)() << endl;

  cout << "最小值" << (numeric_limits<unsigned short int>::min)() << endl;

  // NOTE: signed short int
  cout << "signed short int : \t\t"
       << "所占的字节数:" << sizeof(signed short int) << endl;

  cout << "最大值：" << (numeric_limits<signed short int>::max)() << endl;

  cout << "最小值" << (numeric_limits<signed short int>::min)() << endl;

  // NOTE: long int
  cout << "long int : \t\t"
       << "所占的字节数:" << sizeof(long int) << endl;

  cout << "最大值：" << (numeric_limits<long int>::max)() << endl;

  cout << "最小值" << (numeric_limits<long int>::min)() << endl;

  // NOTE: signed long int
  cout << "signed long int : \t\t"
       << "所占的字节数:" << sizeof(signed long int) << endl;

  cout << "最大值：" << (numeric_limits<signed long int>::max)() << endl;

  cout << "最小值" << (numeric_limits<signed long int>::min)() << endl;

  // NOTE: unsigned long int
  cout << "unsigned long int : \t\t"
       << "所占的字节数:" << sizeof(unsigned long int) << endl;

  cout << "最大值：" << (numeric_limits<unsigned long int>::max)() << endl;

  cout << "最小值" << (numeric_limits<unsigned long int>::min)() << endl;

  // NOTE: float 类型
  cout << "float : \t\t"
       << "所占的字节数:" << sizeof(float) << endl;

  cout << "最大值：" << (numeric_limits<float>::max)() << endl;

  cout << "最小值" << (numeric_limits<float>::min)() << endl;

  // NOTE: double 类型
  cout << "double : \t\t"
       << "所占的字节数:" << sizeof(double) << endl;

  cout << "最大值：" << (numeric_limits<double>::max)() << endl;

  cout << "最小值" << (numeric_limits<double>::min)() << endl;

  // NOTE: long double 类型
  cout << "long double : \t\t"
       << "所占的字节数:" << sizeof(long double) << endl;

  cout << "最大值：" << (numeric_limits<long double>::max)() << endl;

  cout << "最小值" << (numeric_limits<long double>::min)() << endl;

  return 0;
}
